package com.zpark.respository;

import com.zpark.pojo.Comment;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 在这个接口中使用JPA的技术完成数据库的增删改查操作
 * JpaRepository<>中需要传递两个参数
 * 第一个参数表示操作的实体类是哪一个（在实体类上配置了和表的映射关系）
 * 第二个参数表示操作的实体类中对应哪个主键的数据类型，和实体类的@Id属性修饰的数据类型一致
 */
public interface CommentRespository extends JpaRepository<Comment,Integer> {
    // @Query注解表示增删改查操作的注解,nativeQuery = true 参数表示开启原生SQL语句语法规则
    //Pageable表示一个分页的对象，指定起始的数据和最终的数据
    @Query(value = "select * from t_comment where article_id = ?1",nativeQuery = true)
    List<Comment> getCommentPage(Integer article_id, Pageable pageable);  //查询第一页的数据，每页数据显示3条


    @Transactional  //开启事务
    @Modifying  //删除和修改操作必须添加此注解
    @Query("update t_comment c set c.author=?1 where c.id=?2")
    int updateComment(String author,Integer id);

    @Transactional
    @Modifying
    @Query("delete t_comment c where c.id=?1")
    int deleteComment(Integer id);



}
